<?php

trait CoreModelInfoGet
{
    abstract function readStatic($id);
    abstract function readCache($id);
    abstract function readDb($id);
    abstract function writeCache($id, $data);
    abstract function writeStatic($id, $data);
    /**
     *
     * 静态变量 -> 缓存 -> db -> 文件
    参数处理 + 获取信息*n + 格式化*n
    数据预热 + 本地文件
     *
     * 1.根据唯一标识获取数据,支持批量和单一
     * 2.避免重复的
     * 3.格式化
     * 定义缓存为空的标识
    */

    public function fool($id) {
        //读取内存
        $response = $this->readStatic($id);
        if ($response === $this->empty()) {
            //读取缓存
            $response = $this->readCache($id);
            if ($response === $this->empty()) {
                //读取磁盘,更新缓存
                $response = $this->readDb($id);
                $this->writeCache($id, $response);
            }
            $this->writeStatic($id, $response);
        }
        return $response;
    }

    protected function empty()
    {
        return null;
    }

    protected function id($id)
    {
        return $id;
    }
}